import java.util.Scanner;

public class StudentMethod {
public static Student[] std_array;
public static int count; // id와 별개; 학생 인덱스
private String del_id; // del()에서 제거할 학생 학번 입력받는 변수
private String edit_id; //edit()에서 수정할 학생의 학번

public StudentMethod(){
 std_array = new Student[50];
 count = 0;
}
public void add(){
 boolean n = true;
 while(n){
  Scanner scan = new Scanner(System.in);
  std_array[count] = new Student();
 
 System.out.println ("- 학생 정보 입력 -");
  System.out.print ("학번 : ");
  std_array[count].id = scan.nextLine();
  System.out.print ("이름 : ");
  std_array[count].name = scan.nextLine();
  System.out.print ("성별 : ");
  std_array[count].gender = scan.nextLine();
  System.out.print ("생년월일(YYYYMMDD) : ");
  std_array[count].birth = scan.nextInt();
  System.out.print ("중간고사 점수 : ");
  std_array[count].midScore = scan.nextInt();
  System.out.print ("기말고사 점수 : ");
  std_array[count].finScore = scan.nextInt();
 
 System.out.print("\n----> 학생 추가가 완료되었습니다. 추가를 계속 하시겠습니까? (1. 예, 2. 아니오) : ");
  int num = scan.nextInt();
 
 if(num==2)
   n = false;
 
 count++;
  System.out.println();
 }
 
System.out.println("- 확인 -"); //학생 추가 제대로 됐는지 테스트
 for(int i=0; i<count; i++){
  System.out.println(std_array[i].id + "/" + std_array[i].name + "/"+ std_array[i].gender +"/"+ std_array[i].midScore +"/"+ std_array[i].finScore);
 }
}
public void del(){
 System.out.print("삭제하고자 하는 학생의 학번을 입력하세요 : ");
 Scanner scan2 = new Scanner(System.in);
 del_id = scan2.nextLine();
 
for(int i=0; i<count; i++){
  if(del_id.equals(std_array[i].id)){
   System.out.println("\n------------- 기존 정보 확인 ------------");
      System.out.println("학번 : "+ std_array[i].id + "\n이름 : " + std_array[i].name + "\n성별 : " + std_array[i].gender + "\n생년월일 : " + std_array[i].birth + "\n중간고사 점수 : " + std_array[i].midScore + "\n기말고사 점수 : " + std_array[i].finScore);
      System.out.println("-------------------------------------");
   System.out.print("정말 삭제하시겠습니까? (1.예, 2.아니오) : ");
   int num = scan2.nextInt();
   if(num == 1){
    if(i != 0){
     std_array[i].id = std_array[i+1].id;
     std_array[i].name = std_array[i+1].name;
     std_array[i].gender = std_array[i+1].gender;
     std_array[i].birth = std_array[i+1].birth;
     std_array[i].midScore = std_array[i+1].midScore;
     std_array[i].finScore = std_array[i+1].finScore;
     System.out.println("\n-> 요청하신 학생의 정보가 삭제되었습니다.");
     System.out.println();
     count--;
    }
    else if(i == 0){ //i==0일때 배열 옮기면 에러남.
     std_array[i].id="";
           std_array[i].name="";
           std_array[i].gender="";
           std_array[i].birth=0;
           std_array[i].midScore=0;
           std_array[i].finScore=0;
    }
   }
   }
 }
 System.out.println("\n----> 삭제가 완료되었습니다.");
}
public void edit(){ // Update a student's information
 System.out.println ("==== 학생 정보 수정 ====");
    System.out.print ("수정을 원하는 학생의 학번 : ");
    Scanner scan3 = new Scanner(System.in);
    edit_id = scan3.nextLine();
    int edit_num;
    for(int i=0; i<count; i++){ // 학생 찾음
     if(edit_id.equals(std_array[i].id)){
      System.out.println("\n------------- 기존 정보 확인 ------------");
      System.out.println("1.학번 : "+ std_array[i].id + "\n2.이름 : " + std_array[i].name + "\n3.성별 : " + std_array[i].gender + "\n4.생년월일 : " + std_array[i].birth + "\n5.중간고사 점수 : " + std_array[i].midScore + "\n6.기말고사 점수 : " + std_array[i].finScore);
      System.out.println("-------------------------------------");
      System.out.print("수정하실 정보의 번호를 입력해주세요 : ");
      Scanner scan4 = new Scanner(System.in);
      edit_num = scan4.nextInt();
         System.out.println();
      
     switch(edit_num){
      case 1:
       System.out.print ("학번 : ");
       std_array[i].id = scan3.nextLine();
       break;
      case 2:
       System.out.print ("이름 : ");
       std_array[i].name = scan3.nextLine();
       break;
      case 3:
       System.out.print ("성별 : ");
          std_array[i].gender = scan3.nextLine();
       break;
      case 4:
       System.out.print ("생년월일(YYYYMMDD) : ");
          std_array[i].birth = scan3.nextInt();
       break;
      case 5:
       System.out.print ("중간고사 점수 : ");
             std_array[i].midScore = scan3.nextInt();
       break;
      case 6:
       System.out.print ("기말고사 점수 : ");
             std_array[i].finScore = scan3.nextInt();
       break;
      default: System.out.println("Error : 번호를 잘못 입력하셨습니다.\n");
      }
      
     System.out.println();
      System.out.println("-> 학생 정보 수정이 완료되었습니다.");
      System.out.println();
     }
    }
    
}
}